Numerous advances have been made recently to simplify the manner in which users interact with computer systems. For example, graphic user interfaces (GUI) have been created to provide visually intuitive means of interacting with a computer. In particular, GUIs such as that available in the Workplace Shell, part of the OS/2.RTM. operating system, commercially available from IBM Corporation, Boca Raton, Fla., enable users to process and store data using graphic metaphors which resemble real life objects. One of the major components of these and other GUIs is the icon, i.e., a small graphical representation of a familiar object, typically implemented with a bit map, which represents an object, data or other resource available on the computer system. The work area or "desktop" of the GUI may contain multiple icons which are easily selected and manipulated by the user with a pointing device i.e., a mouse, pen, touch screen or even speech recognition software. Such interfaces have vastly reduced the level of sophistication and experience necessary for users to interact in a meaningful manner with the computer system and, accordingly, have increased user productivity.
One of the major developments in the field of software design has been the emergence of object-oriented technology. As explained in greater detail hereinafter, object-oriented technology enables the analysis, design and implementation of software systems with intelligent, autonomous agents called objects. Such objects facilitate the design of modular software that more closely mimics the physical or logical entities within the real world.
One of the more recent developments in object-oriented programming is the Java.RTM. programming language developed by Sun Microsystems, Mountainview, Calif. The Java programming language is an object-oriented language, having many elements in common with the C programming language and C++ programming language, with additional modifications. The Java programming language has the benefits of an interpreted language in the performance of compiled code. To enable Java applications to execute on a computer network, a compiler generates an architecture-neutral object file format, i.e. the compiled code is executable on many processors, given the presence of the Java-run time system.
The Java language enables developers to write custom applications called Java applets. When integrated into webpages delivered over the Internet, Java applets allow expert graphics rendering, real-time interaction with users, live information updating and full use of multimedia and instant interaction with servers over a computer network. With the Java programming language, many applications will have better performance because multiple concurrent threads of activity in the applications were supported by the multithreading built into the Java environment.
The Java language and environment, including the JavaBeans specification provide mechanisms for the creation and management of small components whose function represent the building block to use in applications such as web applications. The term component as used in the specification, refers to Java applets as well as to Java Beans.
One method of providing data exchange across components sharing a common bus is known as Dynamic Data Exchange (DDE), found in Windows, marketed by Microsoft. The DDE uses an event-response model, where an interaction depends on the receiving application to understand a specific event and respond with application-specific callbacks. During operation, the communicating applications must be aware of each other and be in actual direct communication with one another. This requires interrupts and protocols to be formed that are time and resource consuming in order to share system information among applications and components.
Notwithstanding the current developments in data communication among applications and components in an object-oriented environment, a need exists for a system in which the semantics of data flow are based on interpreting the contents of data and the names of the data, not on the names or parameters of the events associated with the generation of the data.
In addition, a need exists for a system in which data flow among a plurality of components in a computer system, are capable of exchanging data without the need for a data broker to control the semantics of data flow among components or applications.